package com.cskaoyan.javase.oop1._8game._1pvz;

/**
 * 僵尸类
 * 僵尸类对象需要和植物类对象之间产生交互,共同完成程序的功能
 * 为了交互方便
 * 可以选择将植物类对象的引用作为自身对象的成员变量持有
 * 植物类和僵尸类需要互相持有引用,方便进行交互
 *
 * @since 11:10
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Zombie {
    /*
        属性
     */
    String name;
    int hp;
    int damage;
    int speed;

    // 持有植物对象的引用作为成员变量
    Plant zombieP;

    /*
        行为
     */
    public void eat() {
        System.out.println(name + "吃掉了你的脑子,真香!");
    }

    // 向植物移动
    public void move() {
        System.out.println(name + "正在向" + zombieP.name + "以" + speed + "的速度移动!");
    }

    // 攻击
    public void attack() {
        System.out.println(name + "正在攻击" + zombieP.name);
    }

    // 被攻击
    public void beAttacked() {
        System.out.println(name + "被" + zombieP.name + "攻击了,还剩下" + (hp - zombieP.damage) + "点血量!");
    }


    // 构造器


    public Zombie() {
    }

    public Zombie(String name, int hp, int damage, int speed) {
        this.name = name;
        this.hp = hp;
        this.damage = damage;
        this.speed = speed;
    }
}
